package com.hqj.demo;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * java日历的练习02
 * @author HQJ
 * 1、利用Calendar的知识实现，输入一个年份，计算得出该年份的母亲节的日期(5月份的第二个星期天)
 *
 * 2、计算劳动合同的续签日
 * 	要求： DateUtil 类   Date getSignDate(Date date,int i)
 * 	1) 输入: 劳动合同的签订日期和签订年限
 * 	2) 返回: 劳动合同的续签日
 *  3) 规则: 劳动合同的到期日的前一个月,  如果周末顺延到周一
 */
public class Exercise04 {
    public static void main(String[] args) {
        DateUtil du = new DateUtil();
        du.getMothersDay(2030);

        Date d = du.getSignDate(new Date(),3);
        System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(d));
    }
}

class DateUtil{

    public void getMothersDay(int year){
        Calendar c = Calendar.getInstance();
        c.set(year,4,1);
        int w = c.get(Calendar.DAY_OF_WEEK);// 8-1
        int day = 0;
        if(w!=1){
            day = 8 - w;//
        }
        c.add(Calendar.DAY_OF_MONTH,day+7);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(year+"的母亲节是:"+sdf.format(c.getTime()));
    }

    /**
     * 合同续签
     * @param date
     * @param i
     * @return
     */
    public Date getSignDate(Date date,int i){

        Calendar c = Calendar.getInstance();
        //把时间转换为日历
        c.setTime(date);
        //时间在年份上进行相加
        c.add(Calendar.YEAR,i);
        //提前一个月
        c.add(Calendar.MONTH,-1);

        //获取星期
        int w = c.get(Calendar.DAY_OF_WEEK);
        if(w==1){
            c.add(Calendar.DAY_OF_MONTH,1); // 1=1 7=2
        }else if(w==7){
            c.add(Calendar.DAY_OF_MONTH,2);
        }
        date = c.getTime();
        return date;
    }


}
